# 列表的意义
# 可以存储密集的同类型数据
class_score = [90,88,89,78,95]
#　列表定义　取值
# *.列表中值的获取
# a).单个元素的获取
my_list = [1, 2, 1.0, [99, 'helo', [33, 44]]]
#          0  1  2    3
#         -4 -3 -2   -1
# 列表的起始索引是0
# b).多个元素的获取
# 切片操作  返回的仍然是一个列表
my_list[0:3]   #代表从　0到3的索引　　3不取(左闭右开)
# 如果 索引默认从0开始 则可以省略  [0:3]->[:3]
# 同理 取到末尾也可以省略 [2:]->[2:len(my_list)] 
my_list[2:len(my_list)] 
# 有步长的跳进切片 my_list[2:7:3]

# 逆序切片 需要保证步长和索引范围都是反的 比如 7 ：2：-1
my_list[7:2:-2]
# 增 删 改 查
my_list = []
# # 1.增加
# # append列表的尾部进行添加
# my_list.append(1)
# # extend 只接收 可迭代对象  并把迭代结果依次添加到列表中
# my_list.extend([1,3,4,5])
# # my_list += [1,2] 本质是 my_list.extend([1,2])

# # 2.删除
# # remove   传入一个列表中存在的value 否则报错
# my_list.remove(3)
# # pop  方法  将列表最后一个变量弹出，可以使用变量接收再次使用
# res = my_list.pop()
# # tips:如果是一个空列表 则没法使用pop进行弹出
# #       pop方法默认是弹出最后一个元素，但是可以手动传入指定的index序号对固定位置的元素进行弹出
# #       my_list.pop(3)  # 对第4个位置上的元素进行弹出
# # clear 会将列表中的所有元素清空
# my_list.clear()
# #　Note: clear不是将原列表赋值为空列表  而是逐一将原列表清空

# # 3.更改
# #  通过索引进行修改
# my_list[0]
# # 通过切片赋值  可以通过控制不同的赋值长度进行 删除，替换，新增
# my_list[2:4] = [2]      # 删除
# my_list[2:4] = [3,4,5]  # 新增
# my_list[2:4] = [77,88]  # 替换
# # 通过insert进行插入更改 在指定索引的前面插入
# my_list.insert(1,1000)

# # 4.查询
# #　指定 查询的对象 如果存在 则返回出现的 次数 否则返回0
# my_list.count(1)
# my_list.index(1)  # 查询值的索引 如果存在则返回值的索引位置 如果不存在  则报错

# #　使用　成员操作　　in / not in
# 999 in my_list  # 判断 999 是不是存在列表my_list 之中


# # 列表排序

# sorted 默认从小到大排序  不更改列表本身 而是返回一个排序好的新列表

# mylist.sort  默认从小到大排序  更改列表本身 不是返回新列表 
# 以上两种方法如果指定 reverse=True 则会按照从大到小的方法进行排序

# # 列表反序  
# my_list.reverse() # 将列表倒置

# 列表推导式
my_list = [[i,j] for j in range(10) for i in range(10)]
# 以下是等价代码
my_list = []
for j in range(10):
    for i in range(10):
        my_list.append([i,j])


# 不定长参数
def f(*args):
    print(args)

# 使用星号  *  对列表解包 传入参数
import time
n = 100000000
def f1():
    t = (1,2,3,4,5,6)
    t1 = time.time()
    for i in range(n):
        b = t[-1]
        c = t[-2]
    print(time.time()-t1)
def f2():
    t = [1,2,3,4,5,6]
    t1 = time.time()
    for i in range(n):
        b = t[-1]
        c = t[-2]
    print(time.time()-t1)

def f():
    f1()
    f2()